/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package BD;

import BE.Ocurrencia;
import java.util.Collection;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author dennis
 */
public class OcurrenciaBD {

        private Session session;

    public OcurrenciaBD() {

         this.session = null;

    }

    //jcguzmanr Mayo 27
    public List<Ocurrencia> buscarOcurrencia(Ocurrencia objOcurrenciaBE) {
        List<Ocurrencia> lista = null;
        Transaction tx = null;
        try {
            session = HibernateUtil.getSessionFactory().getCurrentSession();
            tx = session.beginTransaction();
            String hql = "from Ocurrencia order by srlIdocurrencia";
            Query query = session.createQuery(hql);
            session.flush();
            lista = query.list();
            tx.commit();
 
        } catch (Exception e) {
            e.printStackTrace();
            if (tx != null) {
                tx.rollback();
            }
        }
        return lista;
    }

    public boolean eliminarOcurrencia(Ocurrencia objOcurrenciaBE) {

        Transaction tx = null;
        try {

            session = HibernateUtil.getSessionFactory().getCurrentSession();
            tx = (Transaction) session.beginTransaction();
            session.flush();
            session.evict(objOcurrenciaBE);
            session.update(objOcurrenciaBE);
            tx.commit();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            if (tx != null) {
                tx.rollback();
            }
            return false;
        }
    }

    public boolean insertarOcurrencia(Ocurrencia objOcurrenciaBE) {

        Transaction tx =null;
        try {
            session = HibernateUtil.getSessionFactory().getCurrentSession();
            tx = (Transaction) session.beginTransaction();
            session.save(objOcurrenciaBE);
            tx.commit();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            if (tx != null) {
                tx.rollback();
            }
            return false;
        }

    }

    public boolean modificarOcurrencia(Ocurrencia objOcurrenciaBE) {

        Transaction tx=null;
        try {
            session = HibernateUtil.getSessionFactory().getCurrentSession();
            tx = (Transaction) session.beginTransaction();
            session.flush();
            session.evict(objOcurrenciaBE);

//            TipoDocumentoBE objTipoDocumentoX = (TipoDocumentoBE) session.get(TipoDocumentoBE.class, new Integer(objTipodocumento.getSrlIdtipodocumento()));
//
//            if (objTipoDocumentoX == null) {
//
//                objTipoDocumentoX = new TipoDocumentoBE();
//                objTipoDocumentoX.setCvNombredocumento(objTipodocumento.getCvNombredocumento());
//                objTipoDocumentoX.setBoolEliminado(objTipodocumento.getBoolEliminado());
//
//            }
//            objTipoDocumentoX.setCvNombredocumento(objTipodocumento.getCvNombredocumento());
//            objTipoDocumentoX.setBoolEliminado(objTipodocumento.getBoolEliminado());
            session.saveOrUpdate(objOcurrenciaBE);
            tx.commit();
            //session.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            if (tx != null) {
                tx.rollback();
            }
            return false;
        }
    }


    public Collection seleccionarOcurrencia() {
        List<Ocurrencia> lista = null;
        Transaction tx = null;
        try
        {
        session = HibernateUtil.getSessionFactory().getCurrentSession();
        tx = session.beginTransaction();
        Criteria crit = session.createCriteria(Ocurrencia.class);
        lista=crit.list();
        tx.rollback();
        }
        catch(Exception e) {
            e.printStackTrace();
             if(tx!=null)
            {
                tx.rollback();
            }
        }
        return lista;
    }

}
